import axios from 'axios'
import router from '@/router'

// 设置超时时间是5秒
axios.defaults.timeout = 5000
// 允许跨域
axios.defaults.withCredentials = true
// Content-type 响应头
// axios.defaults.headers.post['Content-type'] = 'application/x-www-form-urlencoding;charset=UTF-8'
axios.defaults.headers.post['Content-type'] = 'application/json;charset=UTF-8'
// 基础 URL
axios.defaults.baseURL = 'http://localhost:9999'

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 为请求头对象, 添加 token 验证的 Authorization
    config.headers.Authorization = window.localStorage.getItem('token')
    // 固定写法, 必须 return config
    return config
  },
  error => {
    console.log('请求拦截器:', error)
  }
)
// 响应拦截器
axios.interceptors.response.use(
  // 如果 response 里面的 status 是 200, 说明访问到接口了, 否则报错
  response => {
    if (response.status === 200) {
      return Promise.resolve(response.data)
    } else {
      return Promise.reject(response.data)
    }
  },
  error => {
    if (error.response.status) {
      switch (error.response.status) {
        case 401: // 身份认证失败
          window.localStorage.clear()
          router.replace({
            path: '/login',
            query: router.currentRoute.fullPath
          })
          break
        case 404: // 没找到
          break
      }
    }
  }
)
